/* 封装axios用于发送请求 */
import axios from 'axios'
// 引入获取、删除token方法
import { getToken, delToken } from '@/utils/storage'
// 引入序列化
const qs = require('qs')
const appkey = 'U2FsdGVkX19WSQ59Cg+Fj9jNZPxRC5y0xB1iV06BeNA='
axios.defaults.headers.post['Content-Type'] =
  'application/x-www-form-urlencoded;charset=utf-8'
const request = axios.create({
  baseURL: 'http://www.kangliuyong.com:10002',
  timeout: 5000
})
// 添加请求拦截器
request.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    // 调用api时需要带上appkey
    // 发送请求前对data数据进行序列化
    if (config.data) {
      config.data.appkey = appkey
      config.data = qs.stringify(config.data)
    }
    // 如果token存在给请求头加上token
    if (getToken()) {
      config.headers.Authorization = getToken()
    }
    return config
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)
// 添加响应拦截器
request.interceptors.response.use(
  function (response) {
    // 对响应数据做点什么
    return response.data
  },
  function (error) {
    if (error.response) {
      // 有错误响应, 提示错误提示
      // 当token过期时返回登录界面
      if (error.response.status === 401) {
        delToken()
        this.router.push('/login')
      } else {
        this.Toast(error.response.data.message)
      }
    }
    // 对响应错误做点什么
    return Promise.reject(error)
  }
)
export default request
